home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / interfaces3_5.lha / Interfaces / Disk.mod < prev    next >
Text File  |  1994-03-05  |  3KB  |  110 lines

  1. (*
  2. (*
  3. **  Amiga Oberon Interface Module:
  4. **  $VER: Disk.mod 40.15 (28.12.93) Oberon 3.0
  5. **
  6. **   © 1993 by Fridtjof Siebert
  7. *)
  8. *)
  9.  
  10. MODULE Disk;
  11.  
  12. IMPORT e * := Exec;
  13.  
  14. TYPE
  15.  
  16. (********************************************************************
  17. *
  18. * Resource structures
  19. *
  20. ********************************************************************)
  21.  
  22.   DiscResourceUnitPtr * = UNTRACED POINTER TO DiscResourceUnit;
  23.   DiscResourceUnit * = STRUCT (message * : e.Message)
  24.     discBlock * : e.Interrupt;
  25.     discSync * : e.Interrupt;
  26.     index * : e.Interrupt;
  27.   END;
  28.  
  29.   DiscResourcePtr * = UNTRACED POINTER TO DiscResource;
  30.   DiscResource * = STRUCT (library * : e.Library)
  31.     current * : DiscResourceUnitPtr;
  32.     flags * : SHORTSET;
  33.     pad * : e.BYTE;
  34.     sysLib * : e.LibraryPtr;
  35.     ciaResource * : e.LibraryPtr;
  36.     unitID * : ARRAY 4 OF LONGINT;
  37.     waiting * : e.List;
  38.     discBlock * : e.Interrupt;
  39.     discSync * : e.Interrupt;
  40.     index * : e.Interrupt;
  41.     currTask * : e.TaskPtr;
  42.   END;
  43.  
  44. CONST
  45.  
  46. (* DiskResource.flags entries *)
  47.   alloc0  * = 0;      (* unit zero is allocated *)
  48.   alloc1  * = 1;      (* unit one is allocated *)
  49.   alloc2  * = 2;      (* unit two is allocated *)
  50.   alloc3  * = 3;      (* unit three is allocated *)
  51.   active  * = 7;      (* is the disc currently busy? *)
  52.  
  53.  
  54.  
  55. (********************************************************************
  56. *
  57. * Hardware Magic
  58. *
  59. ********************************************************************)
  60.  
  61.  
  62.   dskDMAOff * = 4000H;   (* idle command for dsklen register *)
  63.  
  64.  
  65. (********************************************************************
  66. *
  67. * Resource specific commands
  68. *
  69. ********************************************************************)
  70.  
  71. (*
  72.  * DISKNAME is a generic macro to get the name of the resource.
  73.  * This way if the name is ever changed you will pick up the
  74.  *  change automatically.
  75.  *)
  76.  
  77.   diskName * = "disk.resource";
  78.  
  79.  
  80. (********************************************************************
  81. *
  82. * drive types
  83. *
  84. ********************************************************************)
  85.  
  86.   amiga         * = 000000000H;
  87.   drt37422D2S   * = 055555555H;
  88.   empty         * = 0FFFFFFFFH;
  89.   drt150RPM     * = 0AAAAAAAAH;
  90.  
  91.  
  92. VAR
  93.  
  94. (*
  95.  *  You have to put a pointer to the disk.resource here to use the disk
  96.  *  procedures:
  97.  *)
  98.  
  99.   base * : DiscResourcePtr;
  100.  
  101. PROCEDURE AllocUnit *{base,- 6}(unitNum{0}     : LONGINT): BOOLEAN;
  102. PROCEDURE FreeUnit  *{base,-12}(unitNum{0}     : LONGINT);
  103. PROCEDURE GetUnit   *{base,-18}(unitPointer{9} : DiscResourceUnitPtr): DiscResourceUnitPtr;
  104. PROCEDURE GiveUnit  *{base,-24}();
  105. PROCEDURE GetUnitID *{base,-30}(unitNum{0}     : LONGINT): LONGINT;
  106. PROCEDURE ReadUnitID*{base,-36}(unitNum{0}     : LONGINT): LONGINT;
  107.  
  108. END Disk.
  109.  
  110.